/**
 * 用户相关服务
 */
const util = require('../utils/util.js');
const api = require('../config/api.js');


/**
 * Promise封装wx.checkSession
 */
function checkSession() {
  console.log('--3--')
  return new Promise(function (resolve, reject) {
    wx.checkSession({
      success: function () {
        resolve(true);
        console.log('--4--')
      },
      fail: function () {
        reject(false);
        console.log('--5--')
        wx.login() // 重新登录
      }
    })
  });
}

/**
 * Promise封装wx.login
 */
function login() {
  return new Promise(function (resolve, reject) {
    wx.login({
      success: function (res) {
        if (res.code) {
          resolve(res);
        } else {
          reject(res);
        }
      },
      fail: function (err) {
        reject(err);
      }
    });
  });
}

/**
 * 调用微信登录
 */
function loginByWeixin(userInfo,upperId) {
  console.log('微信登录')
  console.log('upperid:' + typeof upperId)
  console.log(userInfo.nickName)
  // if(upperId != null || typeof (upperId) != undefined){
    console.log('第二次微信登录')
    
    return new Promise(function (resolve, reject) {
      return login().then((res) => {
        //登录远程服务器
        util.request(api.AuthLoginByWeixin, { code: res.code, userInfo: userInfo, upperId: upperId }, 'POST').then(res => {
          if (res.errno === 0) {
            //存储用户信息
            wx.setStorageSync('userInfo', res.data.userInfo);
            wx.setStorageSync('token', res.data.token);
            wx.removeStorageSync('upperId')
            resolve(res);
          } else {
            reject(res);
          }
        }).catch((err) => {
          reject(err);
        });
      }).catch((err) => {
        reject(err);
      })
    });
  // }else{
  //   console.log('第一次微信登录')
  // return new Promise(function (resolve, reject) {
  //   return login().then((res) => {
  //     //登录远程服务器
  //     util.request(api.AuthLoginByWeixin, { code: res.code, userInfo: userInfo }, 'POST').then(res => {
  //       if (res.errno === 0) {
  //         //存储用户信息
  //         wx.setStorageSync('userInfo', res.data.userInfo);
  //         wx.setStorageSync('token', res.data.token);

  //         resolve(res);
  //       } else {
  //         reject(res);
  //       }
  //     }).catch((err) => {
  //       reject(err);
  //     });
  //   }).catch((err) => {
  //     reject(err);
  //   })
  // });
  // }
}

/**
 * 判断用户是否登录
 */
function checkLogin() {
  return new Promise(function (resolve, reject) {
    console.log('用户是否登录')
    console.log('userInfo:'+wx.getStorageSync('userInfo'))
    console.log('token:'+wx.getStorageSync('token'))
    console.log(wx.getStorageSync('userInfo') && wx.getStorageSync('token'))
    if (wx.getStorageSync('userInfo') && wx.getStorageSync('token')) {
      checkSession().then(() => {
        resolve(true);
        console.log('已经登录')
      }) .catch(() => {
        // console.log('未已经登录2')
        // reject(false);
      });
    } else {
      console.log('未已经登录1')
      reject(false);
    }
  });
}

module.exports = {
  loginByWeixin,
  checkLogin,
};